/**
 * @author 曾凡旺
 * @date 2020/12/12
 * @Description: 校验公共方法
*/
// 账号
let codeReg = /^(?![0-9]*$)(?![a-zA-Z]*$)[a-zA-Z0-9]{6,20}$/
// 电话
let phoneReg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/

// 必须为数字
let numberReg = /^\d+$|^\d+[.]?\d+$/

// 密码
let passwordReg = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){6,20}$/

// 联系人
let contactsReg = /^[\u0391-\uFFE5A-Za-z]+$/

let regId = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

let emailReg = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/

let FormValidate = (function () {
    function FormValidate() { }
    // From表单验证规则  可用于公用的校验部分
    FormValidate.Form = function () {
        return {
            // 账号的验证规则
            validateCode(rule, value, callback) {
                if (!value) {
                    return callback(new Error('请输入账号'))
                }
                if (!codeReg.test(value)) {
                    callback(new Error('账号必须为6-20位字母和数字组合'))
                } else {
                    callback()
                }
            },

            // 只能数字的验证
            validateNumber(rule, value, callback) {
                if (value !== '') {
                    if (!numberReg.test(value)) {
                        callback(new Error('员工数量必须为数字'))
                    } else {
                        callback()
                    }
                } else {
                    callback()
                }
            },

            // 密码的验证
            validatePsdReg(rule, value, callback) {
                if (!value) {
                    return callback(new Error('请输入密码'))
                }
                if (!passwordReg.test(value)) {
                    callback(new Error('请输入6-20位英文字母、数字或者符号（除空格），且字母、数字和标点符号至少包含两种'))
                } else {
                    callback()
                }
            },

            // 联系人
            validateContacts(rule, value, callback) {
                if (!value) {
                    return callback(new Error('请输入联系人'))
                }
                if (!contactsReg.test(value)) {
                    callback(new Error('联系人不可输入特殊字符'))
                } else {
                    callback()
                }
            },

            // 邮箱的验证规则
            validateEmail(rule, value, callback) {
                if (value !== '') {
                    if (!emailReg.test(value)) {
                        callback(new Error('邮箱格式不正确'))
                    } else {
                        callback()
                    }
                } else {
                    callback()
                }
            },

            // 电话号码的验证
            validatePhone(rule, value, callback) {
                if (!value) {
                    return callback(new Error('请输入手机号码'))
                }
                if (!phoneReg.test(value)) {
                    callback(new Error('手机格式不正确'))
                } else {
                    callback()
                }
            },

            // 身份证的验证规则
            ID(rule, value, callback) {
                if (!value) {
                    return callback(new Error('身份证不能为空'))
                }
                if (!regId.test(value)) {
                    callback(new Error('请输入正确的二代身份证号码'))
                } else {
                    callback()
                }
            }
        }
    }

    return FormValidate
}())

exports.FormValidate = FormValidate


/*使用方法

在组件中引入
import rules from "@/api/rules.js"

// 在data调用
data () {

    return {
      // 提交的参数
      form: {
        companyName: '',
        number: '',
        code: '',
        password: '',
        rePassword: '',
        contacts: '', // 联系人
        phone: '',
        email: '',
        imgCode: ''
      },
      getImgCodeResults: '',
      keyResults: '',
      // 校验规则
      rules: {
          //请输入公司名称
        companyName: [
          {required: true, message: '请输入公司名称', trigger: 'blur'},
          // 可以设置双重验证标准
          {max: 30, message: '公司名称不可超过30个字符11'}
        ],
        //员工数量
        number: [
          {required: false, validator: rules.FormValidate.Form().validateNumber, trigger: 'change'},
          {max: 10, message: '员工数量不可超过10亿'}
        ],
        //账号-6-20位字母或字母与数字组合
        code: [{required: true, validator: rules.FormValidate.Form().validateCode, rigger: 'blur'}],
        //密码 6-20位英文字母、数字或者符号（除空格），且字母、数字和标点符号至少包含两种
        password: [{required: true, validator: rules.FormValidate.Form().validatePsdReg, rigger: 'blur'}],
        //联系人
        contacts: [
          {required: true, validator: rules.FormValidate.Form().validateContacts, rigger: 'blue'},
          {max: 10, message: '联系人不可超过10个字符'}
        ],
        //手机号码
        phone: [{required: true, validator: rules.FormValidate.Form().validatePhone, trigger: 'blur'}],
        //邮箱
        email: [{required: false, validator: rules.FormValidate.Form().validateEmail, trigger: 'change'}],
        //验证码
        imgCode: [{required: true, message: '请输入验证码', rigger: 'blue'}]
      }
    }
  },


//   在html中使用

  <el-form ref="form" :rules="rules" :model="form">
    <el-form-item prop="companyName">
       <i></i>
        <el-input clearable v-model.trim="form.companyName" placeholder="请输入公司名称" auto-complete="true"></el-input>
    </el-form-item>
    <el-form-item prop="number">
        <el-input clearable v-model="form.number" placeholder="请输入员工数量" auto-complete="true"></el-input>
    </el-form-item>
    .
    .
    .
 </el-form>
*/